using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Xml.Linq;
namespace Entidades
{
	public class EdicionesPostulacion
	{
		private const string __ErrorAlta = "No se pudo dar el alta (EdicionesPostulacion), ";
		private const string __ErrorBaja = "No se pudo dar la baja (EdicionesPostulacion), ";
		private const string __ErrorModificacion = "No se pudo hacer la modificacion (EdicionesPostulacion), ";
		private const string __ErrorTraerUno = "No se pudo Traer Uno (EdicionesPostulacion), ";
		private const string __ErrorTraerTodos = "No se pudo Traer Todos (EdicionesPostulacion), ";
		private int _Id;
		private int _IdPostulacion;
		private string _Descripcion;

		private DateTime? _FechaEdicion;
		#region "Propiedades"
		public int Id {
			get { return _Id; }
			set { _Id = value; }
		}
		public int IdPostulacion {
			get { return _IdPostulacion; }
			set { _IdPostulacion = value; }
		}
		public string Descripcion {
			get { return _Descripcion; }
			set { _Descripcion = value; }
		}
		public DateTime? FechaEdicion {
			get { return _FechaEdicion; }
			set { _FechaEdicion = value; }
		}
		#endregion
		#region "Lazys"
		private Postulacion _Postulacion;
		public Postulacion Postulacion {
			get {
				if (_Postulacion == null) {
					_Postulacion = new Postulacion(_IdPostulacion);
				}
				return _Postulacion;
			}
		}
		#endregion
		public EdicionesPostulacion()
		{
            _Descripcion = "";
		}
		public EdicionesPostulacion(int Id)
		{
			EdicionesPostulacion edicionespostulacion = traerUno(Id);
            this._Id = edicionespostulacion.Id;
            this._IdPostulacion = edicionespostulacion.IdPostulacion;
            this._Descripcion = edicionespostulacion.Descripcion;
            this._FechaEdicion = edicionespostulacion.FechaEdicion;
		}
		#region "Metodos Publicos"
		public void Alta()
		{
			try {
				validaAlta();
				DALEdicionesPostulacion.Alta(this);
			} catch (Exception ex) {
				throw new Exception(__ErrorAlta + ex.Message);
			}
		}
		public void Baja()
		{
			try {
				validaBaja();
				DALEdicionesPostulacion.Baja(_Id);
			} catch (Exception ex) {
				throw new Exception(__ErrorBaja + ex.Message);
			}
		}
		public void Modificar()
		{
			try {
				validaModificacion();
				DALEdicionesPostulacion.Modificar(this);
			} catch (Exception ex) {
				throw new Exception(__ErrorModificacion + ex.Message);
			}
		}
		#region "Metodos Estaticos"
		private EdicionesPostulacion traerUno(int Id)
		{
			try {
				return DALEdicionesPostulacion.traerUno(Id);
			} catch (Exception ex) {
				throw new Exception(__ErrorTraerUno + ex.Message);
			}
		}
		public static List<EdicionesPostulacion> TraerTodos()
		{
			try {
				return DALEdicionesPostulacion.TraerTodos();
			} catch (Exception ex) {
				throw new Exception(__ErrorTraerTodos + ex.Message);
			}
		}
		#region "Lazys"
		public static List<EdicionesPostulacion> getAllByIdPostulacion(int IdPostulacion)
		{
			try {
				return DALEdicionesPostulacion.getAllByIdPostulacion(IdPostulacion);
			} catch (Exception ex) {
				throw new Exception("ErrorDeLazyLoad(EdicionesPostulacion)" + ex.Message);
			}
		}
		#endregion
		#endregion
		#endregion
		#region "Metodos Privados"
		private void validaAlta()
		{
			//lanza excepcion si no valida
			//ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
			throw new NotImplementedException();
		}
		private void validaBaja()
		{
			//lanza excepcion si no valida
			throw new NotImplementedException();
		}
		private void validaModificacion()
		{
			//lanza excepcion si no valida
			//ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
			throw new NotImplementedException();
		}
		#endregion
	}
}
